2023/12/231609字符

变量

  • 变量必须先定义再使用;
  • 不可重复定义;
  • 变量定义类型与赋值类型必须一致;
  • 变量声明后不使用会报错,但常量不会;

变量声明

package main   // 包名,保证唯一

import "fmt"   // 导入包

func main() {  // 主函数

    // 约定类型
    var num int = 20
    fmt.Println(num)  //--> 20

    // 类型推断
    var name = "bozai"
    fmt.Printf("type: %T,value: %s\n", name, name)  //-> type: string,value: bozai

    // 简写(只能在函数中使用,左边至少有一个变量名未定义过)
    age := 120
    fmt.Println(age)  //--> 120

    // 声明多个
    var a1, a2, a3 = true, "20", 30.12
    fmt.Printf("types: %T, %T, %T\n", a1, a2, a3)  //--> types: bool, string, float64

    var (
      userName = "bozai"
      userAge = 18
      userSex = "boy"
    )
    fmt.Printf("name: %s, age: %d, sex: %s\n", userName, userAge, userSex)  //--> name: bozai, age: 18, sex: boy

}

常量声明

package main

import "fmt"

func main() {
    // 常量
    const PATH = "http://hpyyb.cn/"

    // 一组常量中,没有赋值会取上一个常量的默认值,但第一个常量不能不赋值
    const (
      A = 1
      B
      C = "h"
      D
      E
    )
    fmt.Println(A, B, C, D, E)  //--> 1 1 h h h

    // 枚举类型常量定义
    const (
      SPRING = 1
      SUMMER = 2
      AUTUMN = 3
      WINTER = 4
    )

    // iota 类型可以被自动修改,直到遇到下一个 const 清零。相当于一个函数累加器
    const (
      NUM1 = iota
      NUM2
      NUM3 = "xxx"  // 这里会使用一次 iota
      NUM4 = iota
    )
    fmt.Println(NUM1, NUM2, NUM3, NUM4)  //--> 0 1 xxx 3

}